package com.k8.rpc.directory;

import com.k8.common.Destructible;
import com.k8.rpc.invoke.Invoker;

import java.util.List;

/**
 * todo
 * 服务目录，用于管理一个服务对应的多个invoker实例
 * */
public interface Directory<T> extends Destructible {
    //返回该目录下的所有invoker，并且应该是线程安全的
    List<Invoker<T>> list();

    int size();
    void addInvokerAddListener(InvokerAddListener invokerAddListener);

    interface InvokerAddListener{
        void invokerAdd(List<Invoker<?>> invokers);
    }
    Class<T> type();
}
